rev 0. : 13/12/2013
Last Update 17/04/2021


*Petite Fat sur SD-card (13/12/2013)
*
Test MikroC Fat32 librairie (04/11/2020)





Petite Fat sur SD-card ( PIC18F26K22)
Préparation de la carte SD
:

images/Sandisk2GB_formattage_Fat32_512bytes.jpg images/Sandisk2GB_proprietes.jpg images/Sandisk2GB_testfile.jpg
formattage SD card en FAT32

proprietes SDcard

mise en place d'un fichier de test

Interface lecteur de carte SD
Carte SANDISK 2GB
Interface Mininthebox ref

images/sd-card-.jpg Sdcard_Pinout_PIC18.jpg images/t_SDcard_lecteur_connection_MSSP1.gif
support de carte SD-Cad Sandisk 2Gb liaison au PIC via MSSP1 liaisons SDCARD <---->PIC

Problemes rencontres :
- Adaptation au PIC18F26K22 :
- Config bits differents
- gestion UART1 (car 2 UART dans ce PIC) sur RC6(tx) et RC7(rx not used)
- Reaffectation des ports E/S Port C au lieu de D pour MSSP1
- Probleme : pas d'info presence carte SD sur cet interface... => ignoré !
- Il faut bien au PREALABLE initialiser la carte SD en FAT32 et secteur de 512 octets ( fait sur un autre PC avec lecteur de Carte !)
- Mettre un petit fichier de texte dessus ! car le test commence par une LECTURE de fichier !
- Adaptation des fichier Hardwareprofil.h et aussi de l'init Hardware dans le main.c !
- rajout d'une variable de pistage pas=0 ..etc .. rajoutéee au message d'erreur ..
- probleme declaration bigbuffer de 512 bytes et debordement du aux autres variables du programme..
il faut rajouter #pragma udata apres la reservation dudit buffer
probleme mis en evidence en consultant le fichier MAP resultant de la compilation


Test ecriture/lecture dans un secteur :
extrait fichier source : Test_ecriture_lecture_sect_512bytes.txt

Test Ecriture/Lecture dans un fichier
de taille 512x16 bytes
extrait fichier source : Test_ecriture_lecture_Fichier.txt

Resultat



Verification du contenu sur un PC

images/Sandisk2GB_sauve003_result.jpg

Harmonisation des fichiers destines à recevoir les datas :
Taille 250Ko chacun, remplis de blanc (0x20)

Projet avec MPLab IDE 8.92 et C18

Petite_Fat_PIC18F_131213.zip








Test Lib FAT32 MikroC
avec SD-card 2Go et PIC18F26K22 PDIP 28 pins

Formattage de la carte SD 2Gb




Charger le package FAT32 lib pour PIC mikroC

aller sur Libstock
https://libstock.mikroe.com/searches
rechercher: FAT32
selectionner
108_fat32_library_v3.2.2.0.zip
copier le fichier *.ZIP dans le directory MikroC Packages
Ne recuperer que la version qui vous interesse : ici version PIC MikroC
1366882085_fat32_library_mikroc_pic.mpkg
nota: * les librairies plus rescentes sont pour le SDK MikroC

lancer l'outils MikroC PackManager
ou directement l'executable
C:\_MikroC\mikroC PRO for PIC\Package Manager\PackageManager.exe
Choix du package :
File
Open Package


Install package ..

( si installe par défaut, copy sur tous les PICs pouvant le recevoir !)



sinon pour une installation Individuelle

sur le PIC de VOTRE choix :
clicker sur FAT32_Defs
Ouvrir l'onglet Devices
Selectionner votre PIC dans la liste des PICs
vous pouvez aussi , déselectionner tous les PICs non concernés
ou rajouter certains Pics que vous avez par ailleurs..


puis click sur grosse fleche verte à droite

installe la lib dans tous les PIC selectionnés, de sorte à retrouver dans le lib manager ,
le choix possible de cette librairie Fat32

on obtient
alors l'acces à la nouvelle lib , dispo dans additionnal librairies
images/Librairie_manager_FAT32_library.jpg
FAT32, FAT32_Defs,FAT32_Drivers

et les fichiers FAT32 sont au meme endroit sur le disque !

images/Package_FAT32Lib_fichiers.gif

il existe une aide , et des exemples

images/t_Fichier_Help_Librairie_FAT32.gif


J'ai donc , à partir de l'exemple MikroC , basé sur un P18F87K22 DIP40 et carte Microclick SDcard
testé :

TEST avec PIC18F26K22

Hardware :
MCU PDIP 28 pins et carte SDCARD + Sandisk 2Gb classe 2

images/t_Hardware_SDcard_18F26K22_2020_11.gif


* NOTES: SANDISK 2GB classe 2
Platine support SD-CARD mininthebox Module SD Card #00407346 3.67€
// 4 VCC 3.3V (internal from voltage regulator 5V -> 3,3V)
// 1--- 6 VSS Alim 5V DC
// 6----3 VSS
#define SD_CS PORTCbits.RC0 -----> // 5----1 CS SD Card pins
#define SD_DO PORTCbits.RC5 -----> // 4----2 DI MOSI
#define SD_DI PORTCbits.RC4 <------ // 2----7 DO MISO
#define SD_CLCK PORTCbits.RC3 -> // 3----5 CLCK
#define SD_WP PORTCbits.RC2 -----// Card Write Protect
Not Exist
#define SD_CD PORTAbits.RA3 -----// Card Detect ..
Not Exist
***************************************


J'utilise ma carte BASE 18F26K22
Liaison UART1 : TX (RC6) et RX (RC7)
Liaison SPI 1 hardware sur RC3=clock RC4=MISO et RC5= MOSI et CS card sur RC0
Alim 5V DC ( la Carte SDCARD supporte le 5V! car regulateur 3,3V sur la carte)


Software :
Petis amenagement pour utiliser un PDIP28 au lieu de DIP40
CS sur PORT RC0 au lieu de PORT D
FOSC interne de 16x4=64MHz au lieu de FOSC Quartz
et autres petits détails .. à ma façon
Le 1er test etait négatif .. blocage apres l'init FAT32
à cause du SPI trop rapide ( pour une SD card type 2!) , diminuer la vitesse max du SPI par 4
// 2 Tests : LNF_TEST + File TEST +->compile OK
// mais bloque sur ligne trop longue sur terminal
// reduction drastique du nombre d'element ecris 1000 -> 20

// rajout d'un CR,LF dans les donnéees ecrites , pour lamise en page sur terminal
/ ===> File TEST + LNF_TEST ... OK
3em Test OK

fichier log (sur UART) :




Ouverture en Lecture de "FILE1.TXT"
Size of Read Buffer = 20
Lecture de "FILE1.TXT"
ABCDEFGHIJKL0
ABCDEFGHIJKL1
ABCDEFGHIJKL2
ABCDEFGHIJKL3
ABCDEFGHIJKL4
ABCDEFGHIJKL5
ABCDEFGHIJKL6
ABCDEFGHIJKL7
ABCDEFGHIJKL8
ABCDEFGHIJKL9

sumary result :

MMC:\
----L--- 12/11/2020 13:59 MMC
---D-SH- DIR 12/11/2020 11:44 System Volume Information
--A----- 1848 12/11/2020 13:59 X_FILES.TXT
--A---H- 160 00/00/2048 00:00 FILE1.TXT


Free Space Info:
Free clusters: 3792944
Free bytes: 1941987328

=================
Scan Disk Info:
Total clusters: 3792953
Free clusters: 3792944
Bad clusters: 0
=================

PB de date sur les fichier simultés dans l'exemple, mais Date OK sur les fichiers crées sous win10
car pas de temps reel dans ce programme, sans RTC !

en conclusion :
tres peu de déboire pour utiliser cette Lib MikroC

Les librairies utilisés pour gerer la carte SD

_Lib_Mmc.mcl" "
_Lib_FAT32_Driver.mcl" "
_Lib_FAT32_Defs.mcl" "
_Lib_FAT32.mcl"

En consultant les statistiques, on voit que la lib FAT32 utilise BEAUCOUP de ressources !

images/t_STAT_partie_FAT32.gif

Used RAM (bytes): 2818 (73%) Free RAM (bytes): 1057 (27%)
Used ROM (bytes): 46389 (71%) Free ROM (bytes): 19147 (29%)

il n'existe plus qu"un tiers des ressources dispo sur ce PIC, pour l' Application !
Mieux vaut prévoir un PIC COSTAUD .. exemple: 18F27K42 pour une grosse application ! (compatible pinout).

Librairies utilisées:
_Lib_Math.mcl" "
_Lib_MathDouble.mcl" "
_Lib_System.mcl" "
_Lib_Delays.mcl" "
_Lib_CString.mcl" "
_Lib_Conversions.mcl" "
_Lib_SPI_c345b123.mcl" "
_Lib_UART_c67b67.mcl" "
_Lib_Mmc.mcl" "
_Lib_FAT32_Driver.mcl" "
_Lib_FAT32_Defs.mcl" "
_Lib_FAT32.mcl"
0 103 Finished successfully: 12 nov. 2020, 14:11:36 SD_FAT32_512_sur_BASE_18F26K22_2020_11.mcppi

Projet MikroC :

Base_18F26K22_MMC_SDCARD_Test_FAT32_512b_2020_1112.zip
SD_FAT32_512_sur_BASE_18F26K22_2020_1112.hex
P18F26K22_FOSC_interne_16xPLL_64MHz_RA6_FreqOut.cfgsch
Base_18F26K22_MMC_SDCARD_Test_FAT32_512b_2020_1112.c

Test avec clusters de 1024 bytes .. OK:
Base_18F26K22_MMC_SDCARD_Test_FAT32_1024b_2020_1110.zip


A suivre
*tests des autres fonctionalites de FAT32..
* avec un exemple pratique : EDF_Info sur carte SD avec 18F27K42
* Test appli FAT32 pour 18F4525 .. par Sanitas

Remarques:
sur l'usage de SQA Anlyser , pour verif FOSC Out RA6 du PIC


retour page d'acceuil

lmail_1.gif